#ifndef _CHASSIS_H_
#define _CHASSIS_H_
#include "main.h"
#include "tim.h"
#include "usart.h"
#include "gpio.h"
#include "string.h"
#include "stdio.h"

//底盘电机速度环PID
#define MOTOR_SPEED_PID_KP 1.50f           //4.5f
#define MOTOR_SPEED_PID_KI 0.08f          //0.9f
#define MOTOR_SPEED_PID_KD 2.20f          //0.0f
#define MOTOR_SPEED_PID_MAX_OUT 480.0f    //PID控制器最大输出，电流值，max 255
#define MOTOR_SPEED_PID_MAX_IOUT 180.0f   //I控制器最大输出    120.0f

#define WHEEL_ROUND 23.42f    //轮子周长，单位cm 
#define TURN_SPEED 3.0f        //转弯比例

extern double set_speed;      //期望速度，在发车前输入期望时间后动态计算,cm/s


//枚举电机ID
typedef enum
{
	MOTOR_1 = 0,
	MOTOR_num
}motor_id_t;

/**
  * @brief          小车底盘平台初始化,获取电机转速
  * @param[in]      void
  * @retval         void
  */
void chassisInit(void);

/**
  * @brief          底盘控制任务，需要消耗CPU资源进行维护
  * @param[in]      void
  * @retval         void
  */
void chassisControlLoop(void);

/**
  * @brief          给舵机输出控制PWM信号
  * @param[in]      输出控制舵机转向的PWM信号
  * @param[in]      uint8_t ccd_pwm值，范围是 -4 ~ +4
  * @retval         void
  */
void Servo_controller(float ccd_pwm);
/**
* @brief 给舵机输入的滤波
  */
float Kalman_Filter_U(float val) ;
#endif

